package Reeks5.VanRansbeeck.Kevin.Model.States.Player;

import Reeks5.VanRansbeeck.Kevin.Model.States.Game.SpelStateContext;
import java.util.logging.Level;
import java.util.logging.Logger;

public class AllinState implements PokerSpelerState{
    
    public String getStatus() {
        return "ALL-IN";
    }

    public void fold(PlayerStateContext aThis, SpelStateContext spelstate) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet meer folden");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void raise(PlayerStateContext aThis, SpelStateContext spelstate, int value) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet meer raisen (met welk geld zouden ze dat doen? :o)");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void call(PlayerStateContext aThis, SpelStateContext spelstate, int value) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet meer callen");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void allin(PlayerStateContext aThis, SpelStateContext spelstate, int value) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet NOG EENS All-In gaan");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void check(PlayerStateContext aThis, SpelStateContext spelstate) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet meer checken");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void reset(PlayerStateContext aThis, SpelStateContext spelstate) {
        // if (spelstate.getStatus() instanceof WinnerState)
        aThis.setStatus(new NewState());
    }

    public void bet(PlayerStateContext aThis, SpelStateContext spelstate, int value) {
        try {
            throw new IllegalAccessException("Spelers die All-In zijn kunnen niet meer betten");
        } catch (IllegalAccessException ex) {
            Logger.getLogger(AllinState.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
